package com.ruoyi.system.service;

import com.twitter.clientlib.model.MultiUserLookupResponse;
import com.twitter.clientlib.model.User;
import com.twitter.clientlib.model.UsersFollowingLookupResponse;
import org.springframework.stereotype.Service;

import java.util.List;

@Service
public interface TwUserPullService {
    /**
     * 开启拉取数据的开关
     *
     * @param running
     */
    public void setRunning(boolean running);

    public boolean isRunning();

    /**
     * 根据用户id, 获取用户关注者的ID列表
     *
     * @param userId          用户ID
     * @param paginationToken 分页token
     * @return 关注者的ID列表
     */
    List<String> fetchFollowingIds(String userId, String paginationToken);

    /**
     * 根据用户id, 获取用户关注者的username列表
     *
     * @param userId          用户ID
     * @param paginationToken 分页token
     * @return 关注者的username列表
     */
    List<String> fetchFollowingUsernames(String userId, String paginationToken);

    /**
     * 根据用户id, 获取用户关注者列表
     *
     * @param userId          用户ID
     * @param paginationToken 分页token
     * @return 用户列表，只能拿到id，username和name
     */
    List<User> fetchFollowingUsers(String userId, String paginationToken);

    /**
     * 获取用户列表
     *
     * @param ids 用户ID列表，每次请求最多可获取100个用户名。
     */
    MultiUserLookupResponse fetchUsersByIds(List<String> ids);

    /**
     * 获取单个用户
     *
     * @param username 用户名
     * @return
     */
    MultiUserLookupResponse fetchUserByUsername(String username);

    /**
     * 获取用户列表
     *
     * @param username 用户名，最多可以指定100个用户名。
     * @return
     */
    MultiUserLookupResponse fetchUsersByUsernames(String... username);

    /**
     * 获取用户列表
     *
     * @param usernames
     * @return
     */
    MultiUserLookupResponse fetchUsersByUsernames(List<String> usernames);

}
